﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YouTravel.DomainModels;
using YouTravel.Framework.Enums;

namespace YouTravel.ViewModels
{
	/// <summary>
	/// 收票列表
	/// </summary>
	public class CollectInvoiceViewModel
	{
		/// <summary>
		/// 付款申请ID
		/// </summary>
		public string ID { get; set; }
		/// <summary>
		/// 专线ID
		/// </summary>
		public string SpecialId { get; set; }
		/// <summary>
		/// 专线名称
		/// </summary>
		public string SpecialName { get; set; }
		/// <summary>
		/// 供应商ID
		/// </summary>
		public string SupplyId { get; set; }
		/// <summary>
		/// 供应商名称
		/// </summary>
		public string SupplyName { get; set; }
		/// <summary>
		/// 付款状态
		/// </summary>
		public int Status { get; set; }
		/// <summary>
		/// 发票状态
		/// </summary>
		public int CollectInvoiceStatus { get; set; }
		/// <summary>
		/// 付款金额
		/// </summary>
		public string Money { get; set; }
		/// <summary>
		/// 付款时间
		/// </summary>
		public DateTime? AuditTime { get; set; }
		/// <summary>
		/// 确认时间
		/// </summary>
		public DateTime? ConfirmTime { get; set; }
	}

	/// <summary>
	/// 提交发票
	/// </summary>
	public class CollectInvoiceAddModel
	{
		/// <summary>
		/// 提交发票ID
		/// </summary>
		public int ID { get; set; }
		/// <summary>
		/// 付款申请ID
		/// </summary>
		public int PaymentID { get; set; }
		///// <summary>
		///// 专线ID
		///// </summary>
		//public int SpecialId { get; set; }
		///// <summary>
		///// 供应商ID
		///// </summary>
		//public int SupplyId { get; set; }
		///// <summary>
		///// 付款金额
		///// </summary>
		//public decimal Money { get; set; }
		/// <summary>
		/// 备注
		/// </summary>
		public string Remark { get; set; }
		/// <summary>
		/// 发票金额
		/// </summary>
		public decimal Money { get; set; }
		/// <summary>
		/// 收票团
		/// </summary>
		public List<CollectInvoiceAddModelGroup> Group { get; set; }
		/// <summary>
		/// 操作人ID
		/// </summary>
		public int OperatorID { get; set; }
		/// <summary>
		/// 操作人名称
		/// </summary>
		public string OperatorName { get; set; }
		/// <summary>
		/// 操作日期
		/// </summary>
		public DateTime OptionTime { get; set; }
	}

	/// <summary>
	/// 发票团
	/// </summary>
	public class CollectInvoiceAddModelGroup
	{
		/// <summary>
		/// 团ID
		/// </summary>
		public int ID { get; set; }
		/// <summary>
		/// 团号
		/// </summary>
		public string Code { get; set; }
		/// <summary>
		/// 团名称
		/// </summary>
		public string Name { get; set; }
		/// <summary>
		/// 发票信息
		/// </summary>
		public List<CollectInvoiceAddModelInfo> Info { get; set; }
	}

	/// <summary>
	/// 发票信息
	/// </summary>
	public class CollectInvoiceAddModelInfo
	{
		/// <summary>
		/// 发票ID
		/// </summary>
		public int ID { get; set; }
		/// <summary>
		/// 发票编号
		/// </summary>
		public string Code { get; set; }
		/// <summary>
		/// 发票金额
		/// </summary>
		public decimal Money { get; set; }
		/// <summary>
		/// 发票日期
		/// </summary>
		public DateTime Date { get; set; }
		/// <summary>
		/// 发票明细
		/// </summary>
		public string Content { get; set; }
	}

	/// <summary>
	/// 提交发票详细（包括部分付款信息）
	/// </summary>
	public class CollectInvoiceDetailModel
	{
		/// <summary>
		/// 提交发票ID
		/// </summary>
		public int ID { get; set; }
		/// <summary>
		/// 付款申请ID
		/// </summary>
		public int PaymentID { get; set; }
		/// <summary>
		/// 专线ID
		/// </summary>
		public int SpecialId { get; set; }
		/// <summary>
		/// 专线名称
		/// </summary>
		public string SpecialName { get; set; }
		/// <summary>
		/// 供应商ID
		/// </summary>
		public int SupplyId { get; set; }
		/// <summary>
		/// 供应商名称
		/// </summary>
		public string SupplyName { get; set; }
		/// <summary>
		/// 付款金额
		/// </summary>
		public decimal Money { get; set; }
		/// <summary>
		/// 备注
		/// </summary>
		public string Remark { get; set; }
		/// <summary>
		/// 提交人
		/// </summary>
		public string Submit { get; set; }
		/// <summary>
		/// 提交时间
		/// </summary>
		public DateTime? SubmitTime { get; set; }
		/// <summary>
		/// 确认人
		/// </summary>
		public string Confirm { get; set; }
		/// <summary>
		/// 确认时间
		/// </summary>
		public DateTime? ConfirmTime { get; set; }
		/// <summary>
		/// 确认备注
		/// </summary>
		public string ConfirmRemark { get; set; }
		/// <summary>
		/// 收票团
		/// </summary>
		public List<CollectInvoiceAddModelGroup> Group { get; set; }
		/// <summary>
		/// 发票科目集合
		/// </summary>
		public List<InvoiceSubjectDetail> InvoiceSubject { get; set; }
	}

	/// <summary>
	/// 详细显示发票科目
	/// </summary>
	public class InvoiceSubjectDetail {
		/// <summary>
		/// 发票科目ID
		/// </summary>
		public int ID { get; set; }
		/// <summary>
		/// 发票科目名称
		/// </summary>
		public string Name { get; set; }
	}

	/// <summary>
	/// 付款发票变更状态提交
	/// </summary>
	public class CollectInvoiceStatusModel
	{
		/// <summary>
		/// 付款发票ID
		/// </summary>
		public int ID { get; set; }
		/// <summary>
		/// 备注
		/// </summary>
		public string Remark { get; set; }
		/// <summary>
		/// 收票状态
		/// </summary>
		public CollectInvoiceStatus Status { get; set; }
		/// <summary>
		/// 操作人ID
		/// </summary>
		public int OperatorID { get; set; }
		/// <summary>
		/// 操作人名称
		/// </summary>
		public string OperatorName { get; set; }
		/// <summary>
		/// 操作日期
		/// </summary>
		public DateTime OptionTime { get; set; }
	}
}
